import { AxiosRequestConfig, AxiosError, AxiosResponse } from 'axios'
import type { Ref } from 'vue'

type RequestConfig = {
  /** 传入的组件loading (一般用于控制按钮的loading) */
  loading?: Ref<boolean>
  /** 传入的dom实例 用于生成局部loading */
  dom?: HTMLElement
  /** 是否添加接口未返回再次请求关闭上次请求的功能 */
  isCancelToken?: boolean
  /** 是否缓存 */
  isCached?: boolean
  /** 是否将数据转换为formData结构 */
  formData?: boolean
} & AxiosRequestConfig

type Response = {
  config: RequestConfig
} & AxiosResponse

export type { RequestConfig, AxiosError, Response }
